/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.uca.dss.curso2011.grupo1.clases;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * Método que implementa la clase RepartoAsiento mediante el reparto aleatorio.
 * @author david
 */
public class RepartoAsientosAleatorio implements RepartoAsientos {
    /**
     * Función que asocia un asiento a una reserva.
     * @param codigo Codigo de la reserva.
     * @param asientos listado de los asientos del medio de transporte que realiza el viaje.
     * @return El asiento asociado a la reserva.
     */
    public int insertaAsiento(int codigo, List<Boolean> asientos) {
        

        List<Integer> indices = new ArrayList<Integer>();
        
        //Selecionamos los no ocupados
        int indice=0;
        for (Boolean asiento: asientos){
            if(asiento.equals(false)){
                indices.add(indice);
            }
            indice += indice;
        }

        //Elegimos uno al azar.
        Random random = new Random();

        int pos = random.nextInt(indices.size());

        int numAsiento = (int) indices.get(pos);


        asientos.set(numAsiento, !asientos.get(numAsiento));

        return numAsiento;

    }
    /**
     * Función que cancela la reserva de un asiento en un viaje.
     * @param asientos listado de los asientos del medio de transporte.
     * @param numAsiento asiento a cancelar.
     */
    public void cancelaAsiento(List<Boolean> asientos, int numAsiento) {


        asientos.set(numAsiento, !asientos.get(numAsiento));

    }


}
